<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//第一种-if...else
			function Max1(x,y,z){
				if(x > y){  //先拿 x 和 y 比较，这一步，已经产生了 x 和 y 中的最大值
					if(x > z){ // 当 x 大于 y ，再拿 x 和 z 比较
						return x;
					}else{
						return z;
					}
				}else{ // 此时， y 比 x 大
					if(y > z){ //已经确定 ，y 比 x 大，再用 y 和 剩下的 z 比较大小
						return y;
					}else{
						return z;
					}
				}
			}
			console.log('Max1:' + Max1(3,9,5));

			//第二种-三目运算法
			function Max2(x,y,z){
				return ( x > y )   ?    (x > z ? x : z)   :    (y > z ? y : z); 
			}
			console.log('Max2:' + Max1(1,2,3));

			//第三种-数学对象方法
			function Max3(x,y,z){
				return Math.max(x,y,z); //用Math对象里面的max方法。
			}
			console.log('Max3:' + Max2(1,2,3));

			//第四种-逻辑与操作符  直接判断出 x y z 中的最大值输出
			function Max4(x,y,z){
				if(x > y && x > z){ 
					return x;
				}
				if(y > x && y > z){
					return y;
				}
				if(z > x && z > y){
					return z;
				}
			}
			console.log('Max4:' + Max3(1,2,3));

			//第五种
			function Max5(x,y,z){
				var x1 = x - x; // x1 = 0
				var y1 = y - x; // 产生 y 和 x 的差值 y1
				var z1 = z - x; // 产生 z 和 x 的差值 z1
				if(y1 > 0 && y1 > z1){
					return y;
				}
				if(z1 > 0 && z1 > y1){
					return z;
				}
				return x;
			}
			console.log('Max5:' + Max5(1,2,3));

			//第六种 - 数组排序法
			function Max6(x,y,z){
				//var arr = [];//空数组
				//也可以直接这样 var arr = [x,y,z];
				//也可以这样 return [x,y,z].sort()[2];
				/*
				arr[0] = x;
				arr[1] = y;
				arr[2] = z;
				return arr.sort();
				*/
				return [x,y,z].sort()[2];
			}
			console.log('Max6:' + Max6(12,1,3)); // [1,12,3] 有bug

			//第七种 -- 第四种方法的变体
			function Max7(x,y,z){
				var n = null;
				x > y && x > z && (n = x);
				y > x && y > z && (n = y);
				z > x && z > y && (n = z);
				return n; 
			}
			console.log('Max7:' + Max7(1,2,3));

			//第八种 -- 先判断两个数中的最大值，然后再用这个最大值和最后一个数字比较
			function Max8(x,y,z){
				var n = null;
				if(x > y){   //先产生其中两个数字中的最大值，将其赋值给n
					n = x;
				}else{
					n = y;
				}
				if(n > z){  //再判断 以上产生的最大值n和最后一个数z比较，再从这两个数字里面，产生一个最大值，就是三个数中的最大值
					return n;
				}else{
					return z;
				}
			}
			console.log('Max8:' + Max8(1,2,3));
		</script>
	</body>
</html>